package hyy_2022;


import java.util.HashSet;
import java.util.Set;

/**
 * 两个数组的交集
 */
public class _0814_349_Intersection {

    /**
     * 两个集合
     * 1、使用两个集合分别存储两个数组的元素
     * 2、遍历较小集合,判断其中的每个元素是否在另一个集合中
     * 3、如果元素在另一个集合中,则将该元素添加到返回值
     * @param num1
     * @param num2
     * @return int[]
     */
    public int[] intersection(int[] num1, int[] num2) {
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();
        for(int num : num1) {
            set1.add(num);
        }
        for(int num : num2) {
            set2.add(num);
        }
        return getIntersection(set1,set2);
    }

    public int[] getIntersection(Set<Integer> set1, Set<Integer> set2) {
            if(set1.size() > set2.size()) {
                return getIntersection(set2, set1);
            }
            Set<Integer> intersectionSet = new HashSet<>();
            for(int num : set1) {
                if(set2.contains(num)) {
                    intersectionSet.add(num);
                }
            }

            //转化为数组
            int[] intersection = new int[intersectionSet.size()];
            int index = 0;
            for(int num : intersectionSet) {
                intersection[index++] = num;
            }

            return intersection;
    }
}
